home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 May / PCWMAY06.iso / Software / Freeware / First Page 2006 3.00 / fp2006-final-3.00-setup.exe / {app} / Iscripts / DHTML - Other / find-in-page.izs < prev    next >
Text File  |  2005-09-02  |  12KB  |  424 lines

  1. <!NOWIZARD>
  2.  
  3. <!TITLE>Find In Page Script
  4. <!/TITLE>
  5.  
  6. <!BROWSER>FF1+ IE5+<!/BROWSER>
  7.  
  8. <!DESCRIPTION>This DHTML script simulates the Edit> Find In Page feature of the browser to allow your visitors to easily search for a particular text on your page. As in the "Find In Page" feature, it highlights the searched text if found, otherwise, prompts a "Not Found" message. 
  9. <!/DESCRIPTION> 
  10.  
  11. <!CATEGORY>other<!/CATEGORY>
  12.  
  13. <!SCRIPT>
  14. <!-- START OF SCRIPT -->
  15. <script>
  16. <!-- Hide from old browsers
  17.  
  18. /******************************************
  19. * Find In Page Script -- Submitted/revised by Alan Koontz (alankoontz@REMOVETHISyahoo.com)
  20. * Visit Dynamic Drive (http://www.dynamicdrive.com/) for full source code
  21. * This notice must stay intact for use
  22. ******************************************/
  23.  
  24. //  revised by Alan Koontz -- May 2003
  25.  
  26. var TRange = null;
  27. var dupeRange = null;
  28. var TestRange = null;
  29. var win = null;
  30.  
  31.  
  32. //  SELECTED BROWSER SNIFFER COMPONENTS DOCUMENTED AT
  33. //  http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
  34.  
  35. var nom = navigator.appName.toLowerCase();
  36. var agt = navigator.userAgent.toLowerCase();
  37. var is_major   = parseInt(navigator.appVersion);
  38. var is_minor   = parseFloat(navigator.appVersion);
  39. var is_ie      = (agt.indexOf("msie") != -1);
  40. var is_ie4up   = (is_ie && (is_major >= 4));
  41. var is_not_moz = (agt.indexOf('netscape')!=-1)
  42. var is_nav     = (nom.indexOf('netscape')!=-1);
  43. var is_nav4    = (is_nav && (is_major == 4));
  44. var is_mac     = (agt.indexOf("mac")!=-1);
  45. var is_gecko   = (agt.indexOf('gecko') != -1);
  46. var is_opera   = (agt.indexOf("opera") != -1);
  47.  
  48.  
  49. //  GECKO REVISION
  50.  
  51. var is_rev=0
  52. if (is_gecko) {
  53. temp = agt.split("rv:")
  54. is_rev = parseFloat(temp[1])
  55. }
  56.  
  57.  
  58. //  USE THE FOLLOWING VARIABLE TO CONFIGURE FRAMES TO SEARCH
  59. //  (SELF OR CHILD FRAME)
  60.  
  61. //  If you want to search another frame, change from "self" to
  62. //  the name of the target frame:
  63. //  e.g., var frametosearch = 'main'
  64.  
  65. //var frametosearch = 'main';
  66. var frametosearch = self;
  67.  
  68.  
  69. function search(whichform, whichframe) {
  70.  
  71. //  TEST FOR IE5 FOR MAC (NO DOCUMENTATION)
  72.  
  73. if (is_ie4up && is_mac) return;
  74.  
  75. //  TEST FOR NAV 6 (NO DOCUMENTATION)
  76.  
  77. if (is_gecko && (is_rev <1)) return;
  78.  
  79. //  TEST FOR Opera (NO DOCUMENTATION)
  80.  
  81. if (is_opera) return;
  82.  
  83. //  INITIALIZATIONS FOR FIND-IN-PAGE SEARCHES
  84.  
  85. if(whichform.findthis.value!=null && whichform.findthis.value!='') {
  86.  
  87.        str = whichform.findthis.value;
  88.        win = whichframe;
  89.        var frameval=false;
  90.        if(win!=self)
  91. {
  92.  
  93.        frameval=true;  // this will enable Nav7 to search child frame
  94.        win = parent.frames[whichframe];
  95.  
  96. }
  97.  
  98.     
  99. }
  100.  
  101. else return;  //  i.e., no search string was entered
  102.  
  103. var strFound;
  104.  
  105. //  NAVIGATOR 4 SPECIFIC CODE
  106.  
  107. if(is_nav4 && (is_minor < 5)) {
  108.    
  109.   strFound=win.find(str); // case insensitive, forward search by default
  110.  
  111. //  There are 3 arguments available:
  112. //  searchString: type string and it's the item to be searched
  113. //  caseSensitive: boolean -- is search case sensitive?
  114. //  backwards: boolean --should we also search backwards?
  115. //  strFound=win.find(str, false, false) is the explicit
  116. //  version of the above
  117. //  The Mac version of Nav4 has wrapAround, but
  118. //  cannot be specified in JS
  119.  
  120.  
  121.         }
  122.  
  123. //  NAVIGATOR 7 and Mozilla rev 1+ SPECIFIC CODE (WILL NOT WORK WITH NAVIGATOR 6)
  124.  
  125. if (is_gecko && (is_rev >= 1)) {
  126.    
  127.     if(frameval!=false) win.focus(); // force search in specified child frame
  128.     strFound=win.find(str, false, false, true, false, frameval, false);
  129.  
  130. //  The following statement enables reversion of focus 
  131. //  back to the search box after each search event 
  132. //  allowing the user to press the ENTER key instead
  133. //  of clicking the search button to continue search.
  134. //  Note: tends to be buggy in Mozilla as of 1.3.1
  135. //  (see www.mozilla.org) so is excluded from users 
  136. //  of that browser.
  137.  
  138.     if (is_not_moz)  whichform.findthis.focus();
  139.  
  140. //  There are 7 arguments available:
  141. //  searchString: type string and it's the item to be searched
  142. //  caseSensitive: boolean -- is search case sensitive?
  143. //  backwards: boolean --should we also search backwards?
  144. //  wrapAround: boolean -- should we wrap the search?
  145. //  wholeWord: boolean: should we search only for whole words
  146. //  searchInFrames: boolean -- should we search in frames?
  147. //  showDialog: boolean -- should we show the Find Dialog?
  148.  
  149.  
  150. }
  151.  
  152.  if (is_ie4up) {
  153.  
  154.   // EXPLORER-SPECIFIC CODE revised 5/21/03
  155.  
  156.   if (TRange!=null) {
  157.       
  158.    TestRange=win.document.body.createTextRange();
  159.  
  160.       
  161.  
  162.    if (dupeRange.inRange(TestRange)) {
  163.  
  164.    TRange.collapse(false);
  165.    strFound=TRange.findText(str);
  166.     if (strFound) {
  167.         //the following line added by Mike and Susan Keenan, 7 June 2003
  168.         win.document.body.scrollTop = win.document.body.scrollTop + TRange.offsetTop;
  169.         TRange.select();
  170.         }
  171.  
  172.  
  173.    }
  174.    
  175.    else {
  176.  
  177.      TRange=win.document.body.createTextRange();
  178.      TRange.collapse(false);
  179.      strFound=TRange.findText(str);
  180.      if (strFound) {
  181.         //the following line added by Mike and Susan Keenan, 7 June 2003
  182.         win.document.body.scrollTop = TRange.offsetTop;
  183.         TRange.select();
  184.         }
  185.  
  186.  
  187.  
  188.    }
  189.   }
  190.   
  191.    if (TRange==null || strFound==0) {
  192.    TRange=win.document.body.createTextRange();
  193.    dupeRange = TRange.duplicate();
  194.    strFound=TRange.findText(str);
  195.     if (strFound) {
  196.         //the following line added by Mike and Susan Keenan, 7 June 2003
  197.         win.document.body.scrollTop = TRange.offsetTop;
  198.         TRange.select();
  199.         }
  200.  
  201.    
  202.    }
  203.  
  204.  }
  205.  
  206.   if (!strFound) alert ("String '"+str+"' not found!") // string not found
  207.  
  208.         
  209. }
  210. // -->
  211. </script>
  212.  
  213. <!--  EXAMPLE FORM OF FIND-IN-PAGE SEARCH USING SUBMIT (ALLOWING 'ENTER/RETURN' KEY PRESS EVENT) -->
  214. <form name="form1" onSubmit="search(document.form1, frametosearch); return false"><input type="text" name="findthis" size="15" title="Press 'ALT s' after clicking submit to repeatedly search page"> <input type="submit" value="Find in Page" ACCESSKEY="s"></form>
  215. <!-- END OF SCRIPT -->
  216. <!/SCRIPT>
  217.  
  218. <!PREVIEW>
  219. <!-- START OF SCRIPT -->
  220. <script>
  221. <!-- Hide from old browsers
  222.  
  223. /******************************************
  224. * Find In Page Script -- Submitted/revised by Alan Koontz (alankoontz@REMOVETHISyahoo.com)
  225. * Visit Dynamic Drive (http://www.dynamicdrive.com/) for full source code
  226. * This notice must stay intact for use
  227. ******************************************/
  228.  
  229. //  revised by Alan Koontz -- May 2003
  230.  
  231. var TRange = null;
  232. var dupeRange = null;
  233. var TestRange = null;
  234. var win = null;
  235.  
  236.  
  237. //  SELECTED BROWSER SNIFFER COMPONENTS DOCUMENTED AT
  238. //  http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
  239.  
  240. var nom = navigator.appName.toLowerCase();
  241. var agt = navigator.userAgent.toLowerCase();
  242. var is_major   = parseInt(navigator.appVersion);
  243. var is_minor   = parseFloat(navigator.appVersion);
  244. var is_ie      = (agt.indexOf("msie") != -1);
  245. var is_ie4up   = (is_ie && (is_major >= 4));
  246. var is_not_moz = (agt.indexOf('netscape')!=-1)
  247. var is_nav     = (nom.indexOf('netscape')!=-1);
  248. var is_nav4    = (is_nav && (is_major == 4));
  249. var is_mac     = (agt.indexOf("mac")!=-1);
  250. var is_gecko   = (agt.indexOf('gecko') != -1);
  251. var is_opera   = (agt.indexOf("opera") != -1);
  252.  
  253.  
  254. //  GECKO REVISION
  255.  
  256. var is_rev=0
  257. if (is_gecko) {
  258. temp = agt.split("rv:")
  259. is_rev = parseFloat(temp[1])
  260. }
  261.  
  262.  
  263. //  USE THE FOLLOWING VARIABLE TO CONFIGURE FRAMES TO SEARCH
  264. //  (SELF OR CHILD FRAME)
  265.  
  266. //  If you want to search another frame, change from "self" to
  267. //  the name of the target frame:
  268. //  e.g., var frametosearch = 'main'
  269.  
  270. //var frametosearch = 'main';
  271. var frametosearch = self;
  272.  
  273.  
  274. function search(whichform, whichframe) {
  275.  
  276. //  TEST FOR IE5 FOR MAC (NO DOCUMENTATION)
  277.  
  278. if (is_ie4up && is_mac) return;
  279.  
  280. //  TEST FOR NAV 6 (NO DOCUMENTATION)
  281.  
  282. if (is_gecko && (is_rev <1)) return;
  283.  
  284. //  TEST FOR Opera (NO DOCUMENTATION)
  285.  
  286. if (is_opera) return;
  287.  
  288. //  INITIALIZATIONS FOR FIND-IN-PAGE SEARCHES
  289.  
  290. if(whichform.findthis.value!=null && whichform.findthis.value!='') {
  291.  
  292.        str = whichform.findthis.value;
  293.        win = whichframe;
  294.        var frameval=false;
  295.        if(win!=self)
  296. {
  297.  
  298.        frameval=true;  // this will enable Nav7 to search child frame
  299.        win = parent.frames[whichframe];
  300.  
  301. }
  302.  
  303.     
  304. }
  305.  
  306. else return;  //  i.e., no search string was entered
  307.  
  308. var strFound;
  309.  
  310. //  NAVIGATOR 4 SPECIFIC CODE
  311.  
  312. if(is_nav4 && (is_minor < 5)) {
  313.    
  314.   strFound=win.find(str); // case insensitive, forward search by default
  315.  
  316. //  There are 3 arguments available:
  317. //  searchString: type string and it's the item to be searched
  318. //  caseSensitive: boolean -- is search case sensitive?
  319. //  backwards: boolean --should we also search backwards?
  320. //  strFound=win.find(str, false, false) is the explicit
  321. //  version of the above
  322. //  The Mac version of Nav4 has wrapAround, but
  323. //  cannot be specified in JS
  324.  
  325.  
  326.         }
  327.  
  328. //  NAVIGATOR 7 and Mozilla rev 1+ SPECIFIC CODE (WILL NOT WORK WITH NAVIGATOR 6)
  329.  
  330. if (is_gecko && (is_rev >= 1)) {
  331.    
  332.     if(frameval!=false) win.focus(); // force search in specified child frame
  333.     strFound=win.find(str, false, false, true, false, frameval, false);
  334.  
  335. //  The following statement enables reversion of focus 
  336. //  back to the search box after each search event 
  337. //  allowing the user to press the ENTER key instead
  338. //  of clicking the search button to continue search.
  339. //  Note: tends to be buggy in Mozilla as of 1.3.1
  340. //  (see www.mozilla.org) so is excluded from users 
  341. //  of that browser.
  342.  
  343.     if (is_not_moz)  whichform.findthis.focus();
  344.  
  345. //  There are 7 arguments available:
  346. //  searchString: type string and it's the item to be searched
  347. //  caseSensitive: boolean -- is search case sensitive?
  348. //  backwards: boolean --should we also search backwards?
  349. //  wrapAround: boolean -- should we wrap the search?
  350. //  wholeWord: boolean: should we search only for whole words
  351. //  searchInFrames: boolean -- should we search in frames?
  352. //  showDialog: boolean -- should we show the Find Dialog?
  353.  
  354.  
  355. }
  356.  
  357.  if (is_ie4up) {
  358.  
  359.   // EXPLORER-SPECIFIC CODE revised 5/21/03
  360.  
  361.   if (TRange!=null) {
  362.       
  363.    TestRange=win.document.body.createTextRange();
  364.  
  365.       
  366.  
  367.    if (dupeRange.inRange(TestRange)) {
  368.  
  369.    TRange.collapse(false);
  370.    strFound=TRange.findText(str);
  371.     if (strFound) {
  372.         //the following line added by Mike and Susan Keenan, 7 June 2003
  373.         win.document.body.scrollTop = win.document.body.scrollTop + TRange.offsetTop;
  374.         TRange.select();
  375.         }
  376.  
  377.  
  378.    }
  379.    
  380.    else {
  381.  
  382.      TRange=win.document.body.createTextRange();
  383.      TRange.collapse(false);
  384.      strFound=TRange.findText(str);
  385.      if (strFound) {
  386.         //the following line added by Mike and Susan Keenan, 7 June 2003
  387.         win.document.body.scrollTop = TRange.offsetTop;
  388.         TRange.select();
  389.         }
  390.  
  391.  
  392.  
  393.    }
  394.   }
  395.   
  396.    if (TRange==null || strFound==0) {
  397.    TRange=win.document.body.createTextRange();
  398.    dupeRange = TRange.duplicate();
  399.    strFound=TRange.findText(str);
  400.     if (strFound) {
  401.         //the following line added by Mike and Susan Keenan, 7 June 2003
  402.         win.document.body.scrollTop = TRange.offsetTop;
  403.         TRange.select();
  404.         }
  405.  
  406.    
  407.    }
  408.  
  409.  }
  410.  
  411.   if (!strFound) alert ("String '"+str+"' not found!") // string not found
  412.  
  413.         
  414. }
  415. // -->
  416. </script>
  417.  
  418. <!--  EXAMPLE FORM OF FIND-IN-PAGE SEARCH USING SUBMIT (ALLOWING 'ENTER/RETURN' KEY PRESS EVENT) -->
  419. <form name="form1" onSubmit="search(document.form1, frametosearch); return false"><input type="text" name="findthis" size="15" title="Press 'ALT s' after clicking submit to repeatedly search page"> <input type="submit" value="Find in Page" ACCESSKEY="s"></form>
  420.  
  421. <!-- END OF SCRIPT -->
  422. <!/PREVIEW>
  423.  
  424. <!RELATED>NONE<!/RELATED>